package com.amigo.online.provider.manager.util.video.download;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import org.jboss.logging.Logger;


public class VideoDownloadUtil {
    private static final Logger LOGGER = Logger.getLogger(VideoDownloadUtil.class);

    /**
     * 下载文件到本地
     *
     * @param urlString 被下载的文件地址
     * @param filename  本地文件名
     * @param timeout   超时时间毫秒
     * @throws Exception 各种异常
     */

    @SuppressWarnings("finally")
    public static boolean download(String urlString, String filename, int timeout) {
        boolean ret = false;
        File file = new File(filename);
        try {
            if (file.exists()) {
                ret = true;
            } else {
                // 构造URL
                URL url = new URL(urlString);
                // 打开连接
                HttpURLConnection con = (HttpURLConnection) url.openConnection();
                con.setConnectTimeout(timeout);
                con.setReadTimeout(timeout);
                con.connect();
                int contentLength = con.getContentLength();
                // 输入流
                InputStream is = con.getInputStream();
                // 1K的数据缓冲
                byte[] bs = new byte[1024];
                // 读取到的数据长度
                int len;
                // 输出的文件流

                File file2 = new File(file.getParent());
                file2.mkdirs();
                if (file.isDirectory()) {

                } else {
                    file.createNewFile();//创建文件
                }
                OutputStream os = new FileOutputStream(file);
                // 开始读取
                while ((len = is.read(bs)) != -1) {
                    os.write(bs, 0, len);
                }
                // 完毕，关闭所有链接
                os.close();
                is.close();
                if (contentLength != file.length()) {
                    file.delete();
                    ret = false;
                } else {
                    ret = true;
                }
            }
        } catch (IOException e) {
            file.delete();
            ret = false;
            LOGGER.error("[VideoUtil:download]:\n" + " VIDEO URL：" + urlString + " \n NEW FILENAME:" + filename + " DOWNLOAD FAILED!! ");
        } finally {
            return ret;
        }
    }


    public static void main(String[] args) {
        System.out.println(download("http://yun.it7090.com/video/XHLaunchAd/video01.mp4", "D:\\image\\969.mp4", 1000000000));
    }


}
